package d3d11;


import java.util.Collections;
import java.util.Iterator;
import org.bridj.BridJ;
import org.bridj.FlagSet;
import org.bridj.IntValuedEnum;
import org.bridj.Pointer;
import static org.bridj.Pointer.*;
import org.bridj.ValuedEnum;
import org.bridj.ann.Library;
import org.bridj.ann.Runtime;
import org.bridj.cpp.CPPRuntime;
import org.bridj.cpp.com.COMRuntime;

import d3d11.core.ID3D11Device;
import d3d11.core.ID3D11DeviceContext;
import dxgi.DXGI_SWAP_CHAIN_DESC;
import dxgi.IDXGIAdapter;
import dxgi.IDXGISwapChain;
/**
 * Wrapper for library <b>d3d11</b><br>
 * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>
 * a tool written by <a href="http://ochafik.free.fr/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br>
 * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> or <a href="http://bridj.googlecode.com/">BridJ</a> .
 */
@Library("d3d11") 
@Runtime(COMRuntime.class) 
public class D3D11 {
	static {
		BridJ.register();
	}

	public enum D3D_INCLUDE_TYPE implements IntValuedEnum<D3D_INCLUDE_TYPE > {
		D3D_INCLUDE_LOCAL(0),
		D3D_INCLUDE_SYSTEM(1),
		D3D_INCLUDE_FORCE_DWORD(0x7FFFFFFF);
		D3D_INCLUDE_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_INCLUDE_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_INCLUDE_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_DRIVER_TYPE implements IntValuedEnum<D3D_DRIVER_TYPE > {
		D3D_DRIVER_TYPE_UNKNOWN(0),
		D3D_DRIVER_TYPE_HARDWARE(1),
		D3D_DRIVER_TYPE_REFERENCE(2),
		D3D_DRIVER_TYPE_NULL(3),
		D3D_DRIVER_TYPE_SOFTWARE(4),
		D3D_DRIVER_TYPE_WARP(5);
		D3D_DRIVER_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_DRIVER_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_DRIVER_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_FEATURE_LEVEL implements IntValuedEnum<D3D_FEATURE_LEVEL > {
		D3D_FEATURE_LEVEL_9_1(0x9100),
		D3D_FEATURE_LEVEL_9_2(0x9200),
		D3D_FEATURE_LEVEL_9_3(0x9300),
		D3D_FEATURE_LEVEL_10_0(0xA000),
		D3D_FEATURE_LEVEL_10_1(0xA100),
		D3D_FEATURE_LEVEL_11_0(0xB000);
		D3D_FEATURE_LEVEL(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_FEATURE_LEVEL > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_FEATURE_LEVEL > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_PRIMITIVE_TOPOLOGY implements IntValuedEnum<D3D_PRIMITIVE_TOPOLOGY > {
		D3D_PRIMITIVE_TOPOLOGY_UNDEFINED(0),
		D3D_PRIMITIVE_TOPOLOGY_POINTLIST(1),
		D3D_PRIMITIVE_TOPOLOGY_LINELIST(2),
		D3D_PRIMITIVE_TOPOLOGY_LINESTRIP(3),
		D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST(4),
		D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP(5),
		D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ(10),
		D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ(11),
		D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ(12),
		D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ(13),
		D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST(33),
		D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST(34),
		D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST(35),
		D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST(36),
		D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST(37),
		D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST(38),
		D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST(39),
		D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST(40),
		D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST(41),
		D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST(42),
		D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST(43),
		D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST(44),
		D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST(45),
		D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST(46),
		D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST(47),
		D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST(48),
		D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST(49),
		D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST(50),
		D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST(51),
		D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST(52),
		D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST(53),
		D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST(54),
		D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST(55),
		D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST(56),
		D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST(57),
		D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST(58),
		D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST(59),
		D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST(60),
		D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST(61),
		D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST(62),
		D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST(63),
		D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST(64);
		D3D_PRIMITIVE_TOPOLOGY(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_PRIMITIVE_TOPOLOGY > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_PRIMITIVE_TOPOLOGY > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_PRIMITIVE implements IntValuedEnum<D3D_PRIMITIVE > {
		D3D_PRIMITIVE_UNDEFINED(0),
		D3D_PRIMITIVE_POINT(1),
		D3D_PRIMITIVE_LINE(2),
		D3D_PRIMITIVE_TRIANGLE(3),
		D3D_PRIMITIVE_LINE_ADJ(6),
		D3D_PRIMITIVE_TRIANGLE_ADJ(7),
		D3D_PRIMITIVE_1_CONTROL_POINT_PATCH(8),
		D3D_PRIMITIVE_2_CONTROL_POINT_PATCH(9),
		D3D_PRIMITIVE_3_CONTROL_POINT_PATCH(10),
		D3D_PRIMITIVE_4_CONTROL_POINT_PATCH(11),
		D3D_PRIMITIVE_5_CONTROL_POINT_PATCH(12),
		D3D_PRIMITIVE_6_CONTROL_POINT_PATCH(13),
		D3D_PRIMITIVE_7_CONTROL_POINT_PATCH(14),
		D3D_PRIMITIVE_8_CONTROL_POINT_PATCH(15),
		D3D_PRIMITIVE_9_CONTROL_POINT_PATCH(16),
		D3D_PRIMITIVE_10_CONTROL_POINT_PATCH(17),
		D3D_PRIMITIVE_11_CONTROL_POINT_PATCH(18),
		D3D_PRIMITIVE_12_CONTROL_POINT_PATCH(19),
		D3D_PRIMITIVE_13_CONTROL_POINT_PATCH(20),
		D3D_PRIMITIVE_14_CONTROL_POINT_PATCH(21),
		D3D_PRIMITIVE_15_CONTROL_POINT_PATCH(22),
		D3D_PRIMITIVE_16_CONTROL_POINT_PATCH(23),
		D3D_PRIMITIVE_17_CONTROL_POINT_PATCH(24),
		D3D_PRIMITIVE_18_CONTROL_POINT_PATCH(25),
		D3D_PRIMITIVE_19_CONTROL_POINT_PATCH(26),
		D3D_PRIMITIVE_20_CONTROL_POINT_PATCH(28),
		D3D_PRIMITIVE_21_CONTROL_POINT_PATCH(29),
		D3D_PRIMITIVE_22_CONTROL_POINT_PATCH(30),
		D3D_PRIMITIVE_23_CONTROL_POINT_PATCH(31),
		D3D_PRIMITIVE_24_CONTROL_POINT_PATCH(32),
		D3D_PRIMITIVE_25_CONTROL_POINT_PATCH(33),
		D3D_PRIMITIVE_26_CONTROL_POINT_PATCH(34),
		D3D_PRIMITIVE_27_CONTROL_POINT_PATCH(35),
		D3D_PRIMITIVE_28_CONTROL_POINT_PATCH(36),
		D3D_PRIMITIVE_29_CONTROL_POINT_PATCH(37),
		D3D_PRIMITIVE_30_CONTROL_POINT_PATCH(38),
		D3D_PRIMITIVE_31_CONTROL_POINT_PATCH(39),
		D3D_PRIMITIVE_32_CONTROL_POINT_PATCH(40);
		D3D_PRIMITIVE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_PRIMITIVE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_PRIMITIVE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_SRV_DIMENSION implements IntValuedEnum<D3D_SRV_DIMENSION > {
		D3D_SRV_DIMENSION_UNKNOWN(0),
		D3D_SRV_DIMENSION_BUFFER(1),
		D3D_SRV_DIMENSION_TEXTURE1D(2),
		D3D_SRV_DIMENSION_TEXTURE1DARRAY(3),
		D3D_SRV_DIMENSION_TEXTURE2D(4),
		D3D_SRV_DIMENSION_TEXTURE2DARRAY(5),
		D3D_SRV_DIMENSION_TEXTURE2DMS(6),
		D3D_SRV_DIMENSION_TEXTURE2DMSARRAY(7),
		D3D_SRV_DIMENSION_TEXTURE3D(8),
		D3D_SRV_DIMENSION_TEXTURECUBE(9),
		D3D_SRV_DIMENSION_TEXTURECUBEARRAY(10),
		D3D_SRV_DIMENSION_BUFFEREX(11);
		D3D_SRV_DIMENSION(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_SRV_DIMENSION > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_SRV_DIMENSION > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_SHADER_VARIABLE_CLASS implements IntValuedEnum<D3D_SHADER_VARIABLE_CLASS > {
		D3D_SVC_SCALAR(0),
		D3D_SVC_VECTOR((1)),
		D3D_SVC_MATRIX_ROWS((2)),
		D3D_SVC_MATRIX_COLUMNS((3)),
		D3D_SVC_OBJECT((4)),
		D3D_SVC_STRUCT((5)),
		D3D_SVC_INTERFACE_CLASS((6)),
		D3D_SVC_INTERFACE_POINTER((7)),
		D3D_SVC_FORCE_DWORD(0x7FFFFFFF);
		D3D_SHADER_VARIABLE_CLASS(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_SHADER_VARIABLE_CLASS > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_SHADER_VARIABLE_CLASS > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_SHADER_VARIABLE_FLAGS implements IntValuedEnum<D3D_SHADER_VARIABLE_FLAGS > {
		D3D_SVF_USERPACKED(1),
		D3D_SVF_USED(2),
		D3D_SVF_INTERFACE_POINTER(4),
		D3D_SVF_INTERFACE_PARAMETER(8),
		D3D_SVF_FORCE_DWORD(0x7FFFFFFF);
		D3D_SHADER_VARIABLE_FLAGS(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_SHADER_VARIABLE_FLAGS > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_SHADER_VARIABLE_FLAGS > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_SHADER_VARIABLE_TYPE implements IntValuedEnum<D3D_SHADER_VARIABLE_TYPE > {
		D3D_SVT_VOID(0),
		D3D_SVT_BOOL(1),
		D3D_SVT_INT(2),
		D3D_SVT_FLOAT(3),
		D3D_SVT_STRING(4),
		D3D_SVT_TEXTURE(5),
		D3D_SVT_TEXTURE1D(6),
		D3D_SVT_TEXTURE2D(7),
		D3D_SVT_TEXTURE3D(8),
		D3D_SVT_TEXTURECUBE(9),
		D3D_SVT_SAMPLER(10),
		D3D_SVT_SAMPLER1D(11),
		D3D_SVT_SAMPLER2D(12),
		D3D_SVT_SAMPLER3D(13),
		D3D_SVT_SAMPLERCUBE(14),
		D3D_SVT_PIXELSHADER(15),
		D3D_SVT_VERTEXSHADER(16),
		D3D_SVT_PIXELFRAGMENT(17),
		D3D_SVT_VERTEXFRAGMENT(18),
		D3D_SVT_UINT(19),
		D3D_SVT_UINT8(20),
		D3D_SVT_GEOMETRYSHADER(21),
		D3D_SVT_RASTERIZER(22),
		D3D_SVT_DEPTHSTENCIL(23),
		D3D_SVT_BLEND(24),
		D3D_SVT_BUFFER(25),
		D3D_SVT_CBUFFER(26),
		D3D_SVT_TBUFFER(27),
		D3D_SVT_TEXTURE1DARRAY(28),
		D3D_SVT_TEXTURE2DARRAY(29),
		D3D_SVT_RENDERTARGETVIEW(30),
		D3D_SVT_DEPTHSTENCILVIEW(31),
		D3D_SVT_TEXTURE2DMS(32),
		D3D_SVT_TEXTURE2DMSARRAY(33),
		D3D_SVT_TEXTURECUBEARRAY(34),
		D3D_SVT_HULLSHADER(35),
		D3D_SVT_DOMAINSHADER(36),
		D3D_SVT_INTERFACE_POINTER(37),
		D3D_SVT_COMPUTESHADER(38),
		D3D_SVT_DOUBLE(39),
		D3D_SVT_RWTEXTURE1D(40),
		D3D_SVT_RWTEXTURE1DARRAY(41),
		D3D_SVT_RWTEXTURE2D(42),
		D3D_SVT_RWTEXTURE2DARRAY(43),
		D3D_SVT_RWTEXTURE3D(44),
		D3D_SVT_RWBUFFER(45),
		D3D_SVT_BYTEADDRESS_BUFFER(46),
		D3D_SVT_RWBYTEADDRESS_BUFFER(47),
		D3D_SVT_STRUCTURED_BUFFER(48),
		D3D_SVT_RWSTRUCTURED_BUFFER(49),
		D3D_SVT_APPEND_STRUCTURED_BUFFER(50),
		D3D_SVT_CONSUME_STRUCTURED_BUFFER(51),
		D3D_SVT_FORCE_DWORD(0x7FFFFFFF);
		D3D_SHADER_VARIABLE_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_SHADER_VARIABLE_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_SHADER_VARIABLE_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_SHADER_INPUT_FLAGS implements IntValuedEnum<D3D_SHADER_INPUT_FLAGS > {
		D3D_SIF_USERPACKED(1),
		D3D_SIF_COMPARISON_SAMPLER(2),
		D3D_SIF_TEXTURE_COMPONENT_0(4),
		D3D_SIF_TEXTURE_COMPONENT_1(8),
		D3D_SIF_TEXTURE_COMPONENTS(12),
		D3D_SIF_FORCE_DWORD(0x7FFFFFFF);
		D3D_SHADER_INPUT_FLAGS(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_SHADER_INPUT_FLAGS > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_SHADER_INPUT_FLAGS > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_SHADER_INPUT_TYPE implements IntValuedEnum<D3D_SHADER_INPUT_TYPE > {
		D3D_SIT_CBUFFER(0),
		D3D_SIT_TBUFFER((1)),
		D3D_SIT_TEXTURE((2)),
		D3D_SIT_SAMPLER((3)),
		D3D_SIT_UAV_RWTYPED((4)),
		D3D_SIT_STRUCTURED((5)),
		D3D_SIT_UAV_RWSTRUCTURED((6)),
		D3D_SIT_BYTEADDRESS((7)),
		D3D_SIT_UAV_RWBYTEADDRESS((8)),
		D3D_SIT_UAV_APPEND_STRUCTURED((9)),
		D3D_SIT_UAV_CONSUME_STRUCTURED((10)),
		D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER((11));
		D3D_SHADER_INPUT_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_SHADER_INPUT_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_SHADER_INPUT_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_SHADER_CBUFFER_FLAGS implements IntValuedEnum<D3D_SHADER_CBUFFER_FLAGS > {
		D3D_CBF_USERPACKED(1),
		D3D_CBF_FORCE_DWORD(0x7FFFFFFF);
		D3D_SHADER_CBUFFER_FLAGS(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_SHADER_CBUFFER_FLAGS > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_SHADER_CBUFFER_FLAGS > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_CBUFFER_TYPE implements IntValuedEnum<D3D_CBUFFER_TYPE > {
		D3D_CT_CBUFFER(0),
		D3D_CT_TBUFFER((1)),
		D3D_CT_INTERFACE_POINTERS((2)),
		D3D_CT_RESOURCE_BIND_INFO((3));
		D3D_CBUFFER_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_CBUFFER_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_CBUFFER_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_NAME implements IntValuedEnum<D3D_NAME > {
		D3D_NAME_UNDEFINED(0),
		D3D_NAME_POSITION(1),
		D3D_NAME_CLIP_DISTANCE(2),
		D3D_NAME_CULL_DISTANCE(3),
		D3D_NAME_RENDER_TARGET_ARRAY_INDEX(4),
		D3D_NAME_VIEWPORT_ARRAY_INDEX(5),
		D3D_NAME_VERTEX_ID(6),
		D3D_NAME_PRIMITIVE_ID(7),
		D3D_NAME_INSTANCE_ID(8),
		D3D_NAME_IS_FRONT_FACE(9),
		D3D_NAME_SAMPLE_INDEX(10),
		D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR(11),
		D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR(12),
		D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR(13),
		D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR(14),
		D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR(15),
		D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR(16),
		D3D_NAME_TARGET(64),
		D3D_NAME_DEPTH(65),
		D3D_NAME_COVERAGE(66),
		D3D_NAME_DEPTH_GREATER_EQUAL(67),
		D3D_NAME_DEPTH_LESS_EQUAL(68);
		D3D_NAME(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_NAME > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_NAME > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_RESOURCE_RETURN_TYPE implements IntValuedEnum<D3D_RESOURCE_RETURN_TYPE > {
		D3D_RETURN_TYPE_UNORM(1),
		D3D_RETURN_TYPE_SNORM(2),
		D3D_RETURN_TYPE_SINT(3),
		D3D_RETURN_TYPE_UINT(4),
		D3D_RETURN_TYPE_FLOAT(5),
		D3D_RETURN_TYPE_MIXED(6),
		D3D_RETURN_TYPE_DOUBLE(7),
		D3D_RETURN_TYPE_CONTINUED(8);
		D3D_RESOURCE_RETURN_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_RESOURCE_RETURN_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_RESOURCE_RETURN_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_REGISTER_COMPONENT_TYPE implements IntValuedEnum<D3D_REGISTER_COMPONENT_TYPE > {
		D3D_REGISTER_COMPONENT_UNKNOWN(0),
		D3D_REGISTER_COMPONENT_UINT32(1),
		D3D_REGISTER_COMPONENT_SINT32(2),
		D3D_REGISTER_COMPONENT_FLOAT32(3);
		D3D_REGISTER_COMPONENT_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_REGISTER_COMPONENT_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_REGISTER_COMPONENT_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_TESSELLATOR_DOMAIN implements IntValuedEnum<D3D_TESSELLATOR_DOMAIN > {
		D3D_TESSELLATOR_DOMAIN_UNDEFINED(0),
		D3D_TESSELLATOR_DOMAIN_ISOLINE(1),
		D3D_TESSELLATOR_DOMAIN_TRI(2),
		D3D_TESSELLATOR_DOMAIN_QUAD(3);
		D3D_TESSELLATOR_DOMAIN(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_TESSELLATOR_DOMAIN > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_TESSELLATOR_DOMAIN > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_TESSELLATOR_PARTITIONING implements IntValuedEnum<D3D_TESSELLATOR_PARTITIONING > {
		D3D_TESSELLATOR_PARTITIONING_UNDEFINED(0),
		D3D_TESSELLATOR_PARTITIONING_INTEGER(1),
		D3D_TESSELLATOR_PARTITIONING_POW2(2),
		D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD(3),
		D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN(4);
		D3D_TESSELLATOR_PARTITIONING(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_TESSELLATOR_PARTITIONING > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_TESSELLATOR_PARTITIONING > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE implements IntValuedEnum<D3D_TESSELLATOR_OUTPUT_PRIMITIVE > {
		D3D_TESSELLATOR_OUTPUT_UNDEFINED(0),
		D3D_TESSELLATOR_OUTPUT_POINT(1),
		D3D_TESSELLATOR_OUTPUT_LINE(2),
		D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW(3),
		D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW(4);
		D3D_TESSELLATOR_OUTPUT_PRIMITIVE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D_TESSELLATOR_OUTPUT_PRIMITIVE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D_TESSELLATOR_OUTPUT_PRIMITIVE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_INPUT_CLASSIFICATION implements IntValuedEnum<D3D11_INPUT_CLASSIFICATION > {
		D3D11_INPUT_PER_VERTEX_DATA(0),
		D3D11_INPUT_PER_INSTANCE_DATA(1);
		D3D11_INPUT_CLASSIFICATION(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_INPUT_CLASSIFICATION > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_INPUT_CLASSIFICATION > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_FILL_MODE implements IntValuedEnum<D3D11_FILL_MODE > {
		D3D11_FILL_WIREFRAME(2),
		D3D11_FILL_SOLID(3);
		D3D11_FILL_MODE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_FILL_MODE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_FILL_MODE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_CULL_MODE implements IntValuedEnum<D3D11_CULL_MODE > {
		D3D11_CULL_NONE(1),
		D3D11_CULL_FRONT(2),
		D3D11_CULL_BACK(3);
		D3D11_CULL_MODE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_CULL_MODE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_CULL_MODE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_RESOURCE_DIMENSION implements IntValuedEnum<D3D11_RESOURCE_DIMENSION > {
		D3D11_RESOURCE_DIMENSION_UNKNOWN(0),
		D3D11_RESOURCE_DIMENSION_BUFFER(1),
		D3D11_RESOURCE_DIMENSION_TEXTURE1D(2),
		D3D11_RESOURCE_DIMENSION_TEXTURE2D(3),
		D3D11_RESOURCE_DIMENSION_TEXTURE3D(4);
		D3D11_RESOURCE_DIMENSION(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_RESOURCE_DIMENSION > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_RESOURCE_DIMENSION > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_DSV_DIMENSION implements IntValuedEnum<D3D11_DSV_DIMENSION > {
		D3D11_DSV_DIMENSION_UNKNOWN(0),
		D3D11_DSV_DIMENSION_TEXTURE1D(1),
		D3D11_DSV_DIMENSION_TEXTURE1DARRAY(2),
		D3D11_DSV_DIMENSION_TEXTURE2D(3),
		D3D11_DSV_DIMENSION_TEXTURE2DARRAY(4),
		D3D11_DSV_DIMENSION_TEXTURE2DMS(5),
		D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY(6);
		D3D11_DSV_DIMENSION(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_DSV_DIMENSION > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_DSV_DIMENSION > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_RTV_DIMENSION implements IntValuedEnum<D3D11_RTV_DIMENSION > {
		D3D11_RTV_DIMENSION_UNKNOWN(0),
		D3D11_RTV_DIMENSION_BUFFER(1),
		D3D11_RTV_DIMENSION_TEXTURE1D(2),
		D3D11_RTV_DIMENSION_TEXTURE1DARRAY(3),
		D3D11_RTV_DIMENSION_TEXTURE2D(4),
		D3D11_RTV_DIMENSION_TEXTURE2DARRAY(5),
		D3D11_RTV_DIMENSION_TEXTURE2DMS(6),
		D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY(7),
		D3D11_RTV_DIMENSION_TEXTURE3D(8);
		D3D11_RTV_DIMENSION(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_RTV_DIMENSION > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_RTV_DIMENSION > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_UAV_DIMENSION implements IntValuedEnum<D3D11_UAV_DIMENSION > {
		D3D11_UAV_DIMENSION_UNKNOWN(0),
		D3D11_UAV_DIMENSION_BUFFER(1),
		D3D11_UAV_DIMENSION_TEXTURE1D(2),
		D3D11_UAV_DIMENSION_TEXTURE1DARRAY(3),
		D3D11_UAV_DIMENSION_TEXTURE2D(4),
		D3D11_UAV_DIMENSION_TEXTURE2DARRAY(5),
		D3D11_UAV_DIMENSION_TEXTURE3D(8);
		D3D11_UAV_DIMENSION(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_UAV_DIMENSION > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_UAV_DIMENSION > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_USAGE implements IntValuedEnum<D3D11_USAGE > {
		D3D11_USAGE_DEFAULT(0),
		D3D11_USAGE_IMMUTABLE(1),
		D3D11_USAGE_DYNAMIC(2),
		D3D11_USAGE_STAGING(3);
		D3D11_USAGE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_USAGE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_USAGE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_BIND_FLAG implements IntValuedEnum<D3D11_BIND_FLAG > {
		D3D11_BIND_NONE(0x0),
		D3D11_BIND_VERTEX_BUFFER(0x1),
		D3D11_BIND_INDEX_BUFFER(0x2),
		D3D11_BIND_CONSTANT_BUFFER(0x4),
		D3D11_BIND_SHADER_RESOURCE(0x8),
		D3D11_BIND_STREAM_OUTPUT(0x10),
		D3D11_BIND_RENDER_TARGET(0x20),
		D3D11_BIND_DEPTH_STENCIL(0x40),
		D3D11_BIND_UNORDERED_ACCESS(0x80);
		D3D11_BIND_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_BIND_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_BIND_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_CPU_ACCESS_FLAG implements IntValuedEnum<D3D11_CPU_ACCESS_FLAG > {
		D3D11_CPU_ACCESS_NONE(0x00000),
		D3D11_CPU_ACCESS_WRITE(0x10000),
		D3D11_CPU_ACCESS_READ(0x20000),
		D3D11_CPU_ACCESS_READ_WRITE(0x30000);
		D3D11_CPU_ACCESS_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_CPU_ACCESS_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_CPU_ACCESS_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_RESOURCE_MISC_FLAG implements IntValuedEnum<D3D11_RESOURCE_MISC_FLAG > {
		D3D11_RESOURCE_MISC_NONE(0x0),
		D3D11_RESOURCE_MISC_GENERATE_MIPS(0x1),
		D3D11_RESOURCE_MISC_SHARED(0x2),
		D3D11_RESOURCE_MISC_TEXTURECUBE(0x4),
		D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS(0x10),
		D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS(0x20),
		D3D11_RESOURCE_MISC_BUFFER_STRUCTURED(0x40),
		D3D11_RESOURCE_MISC_RESOURCE_CLAMP(0x80),
		D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX(0x100),
		D3D11_RESOURCE_MISC_GDI_COMPATIBLE(0x200);
		D3D11_RESOURCE_MISC_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_RESOURCE_MISC_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_RESOURCE_MISC_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_MAP implements IntValuedEnum<D3D11_MAP > {
		D3D11_MAP_READ(1),
		D3D11_MAP_WRITE(2),
		D3D11_MAP_READ_WRITE(3),
		D3D11_MAP_WRITE_DISCARD(4),
		D3D11_MAP_WRITE_NO_OVERWRITE(5);
		D3D11_MAP(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_MAP > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_MAP > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_MAP_FLAG implements IntValuedEnum<D3D11_MAP_FLAG > {
		D3D11_MAP_FLAG_NONE(0),
		D3D11_MAP_FLAG_DO_NOT_WAIT(0x100000);
		D3D11_MAP_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_MAP_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_MAP_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_RAISE_FLAG implements IntValuedEnum<D3D11_RAISE_FLAG > {
		D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR(0x1);
		D3D11_RAISE_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_RAISE_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_RAISE_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_CLEAR_FLAG implements IntValuedEnum<D3D11_CLEAR_FLAG > {
		D3D11_CLEAR_DEPTH(0x1),
		D3D11_CLEAR_STENCIL(0x2);
		D3D11_CLEAR_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_CLEAR_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_CLEAR_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_COMPARISON_FUNC implements IntValuedEnum<D3D11_COMPARISON_FUNC > {
		D3D11_COMPARISON_NEVER(1),
		D3D11_COMPARISON_LESS(2),
		D3D11_COMPARISON_EQUAL(3),
		D3D11_COMPARISON_LESS_EQUAL(4),
		D3D11_COMPARISON_GREATER(5),
		D3D11_COMPARISON_NOT_EQUAL(6),
		D3D11_COMPARISON_GREATER_EQUAL(7),
		D3D11_COMPARISON_ALWAYS(8);
		D3D11_COMPARISON_FUNC(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_COMPARISON_FUNC > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_COMPARISON_FUNC > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_DEPTH_WRITE_MASK implements IntValuedEnum<D3D11_DEPTH_WRITE_MASK > {
		D3D11_DEPTH_WRITE_MASK_ZERO(0),
		D3D11_DEPTH_WRITE_MASK_ALL(1);
		D3D11_DEPTH_WRITE_MASK(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_DEPTH_WRITE_MASK > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_DEPTH_WRITE_MASK > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_STENCIL_OP implements IntValuedEnum<D3D11_STENCIL_OP > {
		D3D11_STENCIL_OP_KEEP(1),
		D3D11_STENCIL_OP_ZERO(2),
		D3D11_STENCIL_OP_REPLACE(3),
		D3D11_STENCIL_OP_INCR_SAT(4),
		D3D11_STENCIL_OP_DECR_SAT(5),
		D3D11_STENCIL_OP_INVERT(6),
		D3D11_STENCIL_OP_INCR(7),
		D3D11_STENCIL_OP_DECR(8);
		D3D11_STENCIL_OP(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_STENCIL_OP > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_STENCIL_OP > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_BLEND implements IntValuedEnum<D3D11_BLEND > {
		D3D11_BLEND_ZERO(1),
		D3D11_BLEND_ONE(2),
		D3D11_BLEND_SRC_COLOR(3),
		D3D11_BLEND_INV_SRC_COLOR(4),
		D3D11_BLEND_SRC_ALPHA(5),
		D3D11_BLEND_INV_SRC_ALPHA(6),
		D3D11_BLEND_DEST_ALPHA(7),
		D3D11_BLEND_INV_DEST_ALPHA(8),
		D3D11_BLEND_DEST_COLOR(9),
		D3D11_BLEND_INV_DEST_COLOR(10),
		D3D11_BLEND_SRC_ALPHA_SAT(11),
		D3D11_BLEND_BLEND_FACTOR(14),
		D3D11_BLEND_INV_BLEND_FACTOR(15),
		D3D11_BLEND_SRC1_COLOR(16),
		D3D11_BLEND_INV_SRC1_COLOR(17),
		D3D11_BLEND_SRC1_ALPHA(18),
		D3D11_BLEND_INV_SRC1_ALPHA(19);
		D3D11_BLEND(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_BLEND > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_BLEND > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_BLEND_OP implements IntValuedEnum<D3D11_BLEND_OP > {
		D3D11_BLEND_OP_ADD(1),
		D3D11_BLEND_OP_SUBTRACT(2),
		D3D11_BLEND_OP_REV_SUBTRACT(3),
		D3D11_BLEND_OP_MIN(4),
		D3D11_BLEND_OP_MAX(5);
		D3D11_BLEND_OP(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_BLEND_OP > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_BLEND_OP > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_COLOR_WRITE_ENABLE implements IntValuedEnum<D3D11_COLOR_WRITE_ENABLE > {
		D3D11_COLOR_WRITE_ENABLE_RED(1),
		D3D11_COLOR_WRITE_ENABLE_GREEN(2),
		D3D11_COLOR_WRITE_ENABLE_BLUE(4),
		D3D11_COLOR_WRITE_ENABLE_ALPHA(8),
		D3D11_COLOR_WRITE_ENABLE_ALL(15);
		D3D11_COLOR_WRITE_ENABLE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_COLOR_WRITE_ENABLE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_COLOR_WRITE_ENABLE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_TEXTURECUBE_FACE implements IntValuedEnum<D3D11_TEXTURECUBE_FACE > {
		D3D11_TEXTURECUBE_FACE_POSITIVE_X(0),
		D3D11_TEXTURECUBE_FACE_NEGATIVE_X(1),
		D3D11_TEXTURECUBE_FACE_POSITIVE_Y(2),
		D3D11_TEXTURECUBE_FACE_NEGATIVE_Y(3),
		D3D11_TEXTURECUBE_FACE_POSITIVE_Z(4),
		D3D11_TEXTURECUBE_FACE_NEGATIVE_Z(5);
		D3D11_TEXTURECUBE_FACE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_TEXTURECUBE_FACE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_TEXTURECUBE_FACE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_BUFFEREX_SRV_FLAG implements IntValuedEnum<D3D11_BUFFEREX_SRV_FLAG > {
		D3D11_BUFFEREX_SRV_FLAG_RAW(0x1);
		D3D11_BUFFEREX_SRV_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_BUFFEREX_SRV_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_BUFFEREX_SRV_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_DSV_FLAG implements IntValuedEnum<D3D11_DSV_FLAG > {
		D3D11_DSV_READ_ONLY_DEPTH(0x1),
		D3D11_DSV_READ_ONLY_STENCIL(0x2);
		D3D11_DSV_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_DSV_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_DSV_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_BUFFER_UAV_FLAG implements IntValuedEnum<D3D11_BUFFER_UAV_FLAG > {
		D3D11_BUFFER_UAV_FLAG_RAW(0x1),
		D3D11_BUFFER_UAV_FLAG_APPEND(0x2),
		D3D11_BUFFER_UAV_FLAG_COUNTER(0x4);
		D3D11_BUFFER_UAV_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_BUFFER_UAV_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_BUFFER_UAV_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_FILTER implements IntValuedEnum<D3D11_FILTER > {
		D3D11_FILTER_MIN_MAG_MIP_POINT(0),
		D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR(0x1),
		D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT(0x4),
		D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR(0x5),
		D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT(0x10),
		D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR(0x11),
		D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT(0x14),
		D3D11_FILTER_MIN_MAG_MIP_LINEAR(0x15),
		D3D11_FILTER_ANISOTROPIC(0x55),
		D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT(0x80),
		D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR(0x81),
		D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT(0x84),
		D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR(0x85),
		D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT(0x90),
		D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR(0x91),
		D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT(0x94),
		D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR(0x95),
		D3D11_FILTER_COMPARISON_ANISOTROPIC(0xD5);
		D3D11_FILTER(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_FILTER > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_FILTER > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_FILTER_TYPE implements IntValuedEnum<D3D11_FILTER_TYPE > {
		D3D11_FILTER_TYPE_POINT(0),
		D3D11_FILTER_TYPE_LINEAR(1);
		D3D11_FILTER_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_FILTER_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_FILTER_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_TEXTURE_ADDRESS_MODE implements IntValuedEnum<D3D11_TEXTURE_ADDRESS_MODE > {
		D3D11_TEXTURE_ADDRESS_WRAP(1),
		D3D11_TEXTURE_ADDRESS_MIRROR(2),
		D3D11_TEXTURE_ADDRESS_CLAMP(3),
		D3D11_TEXTURE_ADDRESS_BORDER(4),
		D3D11_TEXTURE_ADDRESS_MIRROR_ONCE(5);
		D3D11_TEXTURE_ADDRESS_MODE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_TEXTURE_ADDRESS_MODE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_TEXTURE_ADDRESS_MODE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_FORMAT_SUPPORT implements IntValuedEnum<D3D11_FORMAT_SUPPORT > {
		D3D11_FORMAT_SUPPORT_BUFFER(0x1),
		D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER(0x2),
		D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER(0x4),
		D3D11_FORMAT_SUPPORT_SO_BUFFER(0x8),
		D3D11_FORMAT_SUPPORT_TEXTURE1D(0x10),
		D3D11_FORMAT_SUPPORT_TEXTURE2D(0x20),
		D3D11_FORMAT_SUPPORT_TEXTURE3D(0x40),
		D3D11_FORMAT_SUPPORT_TEXTURECUBE(0x80),
		D3D11_FORMAT_SUPPORT_SHADER_LOAD(0x100),
		D3D11_FORMAT_SUPPORT_SHADER_SAMPLE(0x200),
		D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON(0x400),
		D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT(0x800),
		D3D11_FORMAT_SUPPORT_MIP(0x1000),
		D3D11_FORMAT_SUPPORT_MIP_AUTOGEN(0x2000),
		D3D11_FORMAT_SUPPORT_RENDER_TARGET(0x4000),
		D3D11_FORMAT_SUPPORT_BLENDABLE(0x8000),
		D3D11_FORMAT_SUPPORT_DEPTH_STENCIL(0x10000),
		D3D11_FORMAT_SUPPORT_CPU_LOCKABLE(0x20000),
		D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE(0x40000),
		D3D11_FORMAT_SUPPORT_DISPLAY(0x80000),
		D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT(0x100000),
		D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET(0x200000),
		D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD(0x400000),
		D3D11_FORMAT_SUPPORT_SHADER_GATHER(0x800000),
		D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST(0x1000000),
		D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW(0x2000000),
		D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON(0x4000000);
		D3D11_FORMAT_SUPPORT(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_FORMAT_SUPPORT > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_FORMAT_SUPPORT > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_FORMAT_SUPPORT2 implements IntValuedEnum<D3D11_FORMAT_SUPPORT2 > {
		D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD(0x1),
		D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS(0x2),
		D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE(0x4),
		D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE(0x8),
		D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX(0x10),
		D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX(0x20),
		D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD(0x40),
		D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE(0x80);
		D3D11_FORMAT_SUPPORT2(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_FORMAT_SUPPORT2 > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_FORMAT_SUPPORT2 > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_ASYNC_GETDATA_FLAG implements IntValuedEnum<D3D11_ASYNC_GETDATA_FLAG > {
		D3D11_ASYNC_GETDATA_NONE(0x0),
		D3D11_ASYNC_GETDATA_DONOTFLUSH(0x1);
		D3D11_ASYNC_GETDATA_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_ASYNC_GETDATA_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_ASYNC_GETDATA_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_QUERY implements IntValuedEnum<D3D11_QUERY > {
		D3D11_QUERY_EVENT(0),
		D3D11_QUERY_OCCLUSION(1),
		D3D11_QUERY_TIMESTAMP(2),
		D3D11_QUERY_TIMESTAMP_DISJOINT(3),
		D3D11_QUERY_PIPELINE_STATISTICS(4),
		D3D11_QUERY_OCCLUSION_PREDICATE(5),
		D3D11_QUERY_SO_STATISTICS(6),
		D3D11_QUERY_SO_OVERFLOW_PREDICATE(7),
		D3D11_QUERY_SO_STATISTICS_STREAM0(8),
		D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0(9),
		D3D11_QUERY_SO_STATISTICS_STREAM1(10),
		D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1(11),
		D3D11_QUERY_SO_STATISTICS_STREAM2(12),
		D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2(13),
		D3D11_QUERY_SO_STATISTICS_STREAM3(14),
		D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3(15);
		D3D11_QUERY(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_QUERY > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_QUERY > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_QUERY_MISC_FLAG implements IntValuedEnum<D3D11_QUERY_MISC_FLAG > {
		D3D11_QUERY_MISC_PREDICATEHINT(0x1);
		D3D11_QUERY_MISC_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_QUERY_MISC_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_QUERY_MISC_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_COUNTER implements IntValuedEnum<D3D11_COUNTER > {
		D3D11_COUNTER_DEVICE_DEPENDENT_0(0x40000000);
		D3D11_COUNTER(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_COUNTER > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_COUNTER > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_COUNTER_TYPE implements IntValuedEnum<D3D11_COUNTER_TYPE > {
		D3D11_COUNTER_TYPE_FLOAT32(0),
		D3D11_COUNTER_TYPE_UINT16(1),
		D3D11_COUNTER_TYPE_UINT32(2),
		D3D11_COUNTER_TYPE_UINT64(3);
		D3D11_COUNTER_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_COUNTER_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_COUNTER_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS implements IntValuedEnum<D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS > {
		D3D11_STANDARD_MULTISAMPLE_PATTERN(0xFFFFFFFF),
		D3D11_CENTER_MULTISAMPLE_PATTERN(0xFFFFFFF);
		D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_DEVICE_CONTEXT_TYPE implements IntValuedEnum<D3D11_DEVICE_CONTEXT_TYPE > {
		D3D11_DEVICE_CONTEXT_IMMEDIATE(0),
		D3D11_DEVICE_CONTEXT_DEFERRED(1);
		D3D11_DEVICE_CONTEXT_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_DEVICE_CONTEXT_TYPE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_DEVICE_CONTEXT_TYPE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_FEATURE implements IntValuedEnum<D3D11_FEATURE > {
		D3D11_FEATURE_THREADING(0),
		D3D11_FEATURE_DOUBLES(1),
		D3D11_FEATURE_FORMAT_SUPPORT(2),
		D3D11_FEATURE_FORMAT_SUPPORT2(3),
		D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS(4);
		D3D11_FEATURE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_FEATURE > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_FEATURE > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_CREATE_DEVICE_FLAG implements IntValuedEnum<D3D11_CREATE_DEVICE_FLAG > {
		D3D11_CREATE_DEVICE_SINGLETHREADED(0x1),
		D3D11_CREATE_DEVICE_DEBUG(0x2),
		D3D11_CREATE_DEVICE_SWITCH_TO_REF(0x4),
		D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS(0x8),
		D3D11_CREATE_DEVICE_BGRA_SUPPORT(0x20);
		D3D11_CREATE_DEVICE_FLAG(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_CREATE_DEVICE_FLAG > iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_CREATE_DEVICE_FLAG > fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	};
	public enum D3D11_SHADER_VERSION_TYPE implements IntValuedEnum<D3D11_SHADER_VERSION_TYPE> {
	    D3D11_SHVER_PIXEL_SHADER(0),
	    D3D11_SHVER_VERTEX_SHADER(1),
	    D3D11_SHVER_GEOMETRY_SHADER(2),
	    
	    // D3D11 Shaders
	    D3D11_SHVER_HULL_SHADER(3),
	    D3D11_SHVER_DOMAIN_SHADER(4),
	    D3D11_SHVER_COMPUTE_SHADER(5);
	    
	    D3D11_SHADER_VERSION_TYPE(long value) {
			this.value = value;
		}
		public final long value;
		public long value() {
			return this.value;
		}
		public Iterator<D3D11_SHADER_VERSION_TYPE> iterator() {
			return Collections.singleton(this).iterator();
		}
		public static ValuedEnum<D3D11_SHADER_VERSION_TYPE> fromValue(long value) {
			return FlagSet.fromValue(value, values());
		}
	}
	
	
	
	public static final int D3D11_MIN_FILTER_SHIFT = (4);
	public static final int D3D11_APPEND_ALIGNED_ELEMENT = (-1);
	public static final int D3D11_MAG_FILTER_SHIFT = (2);
	public static final int D3D11_MIP_FILTER_SHIFT = (0);
	public static final int D3D11_ANISOTROPIC_FILTERING_BIT = (64);
	public static final int D3D11_SDK_VERSION = (7);
	public static final int D3D11_COMPARISON_FILTERING_BIT = (128);
	public static final int D3D11_FILTER_TYPE_MASK = (3);
	
	public static int D3D11CalcSubresource(int MipSlice, int ArraySlice, int MipLevels) {
		return MipSlice + ArraySlice * MipLevels;
	}
	
	
	public static native int D3D11CreateDevice(Pointer<IDXGIAdapter> pAdapter,
											   ValuedEnum<D3D_DRIVER_TYPE> DriverType,
											   Pointer<?> Software,
											   int Flags,
											   Pointer<Integer> pFeatureLevels,
											   int FeatureLevels,
											   int SDKVersion,
											   Pointer<Pointer<ID3D11Device>> ppDevice,
											   Pointer<Integer> pFeatureLevel,
											   Pointer<Pointer<ID3D11DeviceContext>> ppImmediateContext);
	
	
	
	public static native int D3D11CreateDeviceAndSwapChain(Pointer<IDXGIAdapter> pAdapter,
														   ValuedEnum<D3D_DRIVER_TYPE> DriverType,
														   Pointer<?> Software,
														   int Flags,
														   Pointer<Integer> pFeatureLevels,
														   int FeatureLevels,
														   int SDKVersion,
														   Pointer<DXGI_SWAP_CHAIN_DESC> pSwapChainDesc,
														   Pointer<IDXGISwapChain> ppSwapChain,
														   Pointer<ID3D11Device> ppDevice,
														   Pointer<D3D_FEATURE_LEVEL> pFeatureLevel,
														   Pointer<ID3D11DeviceContext> ppImmediateContext);
	
	// "Javanized" methods
	public static ID3D11Device D3D11CreateDevice(IDXGIAdapter adapter,
											ValuedEnum<D3D_DRIVER_TYPE> driverType,
											int Flags,
											D3D_FEATURE_LEVEL[] requiredLevels) {
		
		Pointer<Pointer<ID3D11Device>> ppDevice = null;
		try {
			ppDevice = allocatePointer(ID3D11Device.class);
			
			Pointer<Integer> pLevels = null;
			if(requiredLevels != null) {
				pLevels = allocateInts(requiredLevels.length);
				for(int i = 0; i < requiredLevels.length; i++) {
					pLevels.set(i, (int) requiredLevels[i].value);
				}
			}			
			
			int result = D3D11CreateDevice(pointerTo(adapter),
										   driverType,
										   null,
										   Flags,
										   pLevels,
										   requiredLevels.length,
										   D3D11_SDK_VERSION,
										   ppDevice,
										   null,
										   null);
			if(result != 0) {
				throw new D3D11Exception("Error creating D3D11 device", result);
			}
			
			return ppDevice.get().getNativeObject(ID3D11Device.class);
		
		} finally {
			if(ppDevice != null)
				ppDevice.release();
		}
	}
	
	
}
